package com.product.android.business;

import com.product.android.business.bean.UserInfo;
import com.product.android.business.login.IGetUserInfo;
import com.product.android.business.login.LoginFlag;
import com.product.android.commonInterface.allCommonInterfaceImpl.AllCommonCallOtherModel;
import com.product.android.utils.SharedPreferenceHelper;

import android.content.Context;
import android.text.TextUtils;
import android.util.DisplayMetrics;

/**
 * ClassName:ApplicationVariable Function: 全局变量管理类（在整个应用范围内都可能用到） Reason: TODO
 * ADD REASON
 * 
 * @author cb
 * @version v1.3.x
 * @Date 2013 2013-12-18 下午5:43:35
 * 
 * @see
 */
public enum ApplicationVariable {
	INSTANCE;

	// 用户身份
	public static enum IDENTITY {
		UNKNOWN(-1), // 未知身份
		STAFF(1), // 职员
		STUDENT(2), // 学生
		PARENTS(3); // 家长

		private int mValue;

		private IDENTITY(int value) {
			mValue = value;
		}

		public int getValue() {
			return mValue;
		}

		public static IDENTITY value2Enum(int value) {
			IDENTITY[] array = IDENTITY.values();
			for (IDENTITY item : array) {
				if (item.mValue == value) {
					return item;
				}
			}
			return UNKNOWN;
		}
	}

	public Context applicationContext;
	public DisplayMetrics displayMetrics;
	public boolean isForceOffline = false; // 是否被强制掉线
	public boolean isIdentityExpired = false; // 是否身份过期

	private LoginType mCurrentLoginType = LoginType._99_ACCOUNT_LOGIN;	// 5iup兼容

	// 登录方式
	public static enum LoginType {
		_JOB_NUMBER_LOGIN, // 工号登录
		_99_ACCOUNT_LOGIN; // 99账号登录
	}

	private IGetUserInfo iUser;
	
    public IGetUserInfo getIUser(){
        return iUser;
    }
    
    public void setIUser(IGetUserInfo iUser){
        this.iUser = iUser;
    }



	/**
	 * @n<b>函数名称</b> :getSid
	 * @brief 获取SID，有可能会从网络取，请注意!!!!!!!
	 * @see
	 * @since Ver 1.1
	 * @return
	 * @<b>作者</b> : cb
	 * @<b>创建时间</b> : 2014-4-25上午11:15:45
	 */
	public String getSid() {		
		String sid = "";
	    if(iUser!=null){
	        sid = iUser.getSid();
	    }
	    if (!TextUtils.isEmpty(sid)) {
            // 已有SID，直接返回
            return sid;
        }
	    
	    return AllCommonCallOtherModel.MainModel.getRelginSid();
	}
    
    /**
     * 清除sid
     * 
     * <br>Created 2014-8-14 下午4:21:39
     * @author       huangyx
     */
	public void setExpiredSid() {
        if(iUser!=null){
            iUser.clearSid();
        }
	}
    
    /**
     * 获取当前登录的oapid
     * 
     * <br>Created 2014-8-14 下午4:21:04
     * @return long
     * @author       huangyx
     */
	public long getUapUid() {
        if(iUser!=null){
            return iUser.getUapUid();
        }
		return 0;
	}
    
    /**
     * 获取当前登录的oapid
     * 
     * <br>Created 2014-8-14 下午4:20:32
     * @return long
     * @author       huangyx
     */
	public long getOapUid() {
        if(iUser!=null){
            return iUser.getOapUid();
        }
		return 0;
	}
    
    /**
     * 获取当前登录的单位id
     * 
     * <br>Created 2014-8-14 下午4:18:40
     * @return 单位id
     * @author       huangyx
     */
	public int getUnitid() {
	    if(iUser!=null && iUser.getBindUser()!=null){
            return iUser.getBindUser().getUnitid();
        }
		return 0;
	}
	
	/**
	 * 获取单位名称
	 * <br>Created 2014-8-19 下午4:57:39
	 * @return 单位名称
	 * @author  cb
	*/
	public String getUnitName() {
		if (iUser != null && iUser.getBindUser() != null) {
			return iUser.getBindUser().getUnitname();
		}
		return "";
	}
	
	/**
	 * 获取当前登录的用户名称
	 * <br>Created 2014-8-19 下午4:57:39
	 * @return 用户名称
	 * @author  cb
	 */
	public String getUserName() {
		if (iUser != null && iUser.getBindUser() != null) {
			return iUser.getBindUser().getUsername();
		}
		return "";
	}
	
	

	/*
	 * @return 返回当前登录用户信息，返回null表示没有当前登录用户信息
	 */
	public UserInfo getCurrentUserInfo() {
	    return converToUserInfo(iUser);
	}
	
	public UserInfo converToUserInfo(IGetUserInfo user){
        if(user == null){
            return null;
        }
        try {
            UserInfo u = new UserInfo();
            u.setBlowfish(user.getBlowFish());
            u.setIs_phone(1);
            u.setIsAutoLogin(user.isAutoLogin());
            u.setIsSaveAccount(user.isSavePwd());
            u.setLastLoginDt(user.getLastLoginTime());
            u.setOapUid(user.getOapUid());
            u.setUapUid(user.getUapUid());
            u.setOapUnitId(user.getOapUnitId());
            u.setSessionId(user.getSid());
            u.setTicket(user.getTicekt());
            u.setUapUid(user.getUapUid());
            u.setUserName(user.getAccount());
            u.setUserNickName(user.getNickName());
            u.setSessionId(user.getSid());
            u.setUserPass("~~~");
            u.setIdentity(user.getType());
            return u;
        } catch (Exception e) {
        }
        return null;
    }

	public LoginFlag getLoginFlag() {
		int value = SharedPreferenceHelper.getInstance(applicationContext)
				.loadIntKey(SharedPreferenceHelper.CONFIG_LOGIN_FLAG,
						LoginFlag.DEFAULT.getValue());
		return LoginFlag.value2Flag(value);
	}

	/**
	 * @n<b>函数名称</b> :setLastLoginUser
	 * @brief 保存最后一次登录的用户
	 * @see
	 * @version Ver 1.3.x
	 * @param @param info
	 * @return void
	 * @<b>作者</b> : cb
	 * @<b>创建时间</b> : 2013-12-18下午5:42:54
	 */
	public void saveLoginType(LoginType currentLoginType) {
		mCurrentLoginType = currentLoginType;
	}
	
	public LoginType getLoginType() {
	    return mCurrentLoginType;
	}

	/**
	 * 
	 * @n<b>函数名称</b>     :getLocalSid
	 * @brief                取内存中的sid，不去网络去取．
	 * @see
	 * @since    Ver 1.1
	 * @return String
	 * @<b>作者</b>          :  zhy
	 * @<b>创建时间</b>      :  2014-6-12下午6:55:32
	 */
	public String getLocalSid(){
	    String sid = "";
	    if(iUser!=null){
	        sid = iUser.getSid();
	    }
        return sid;
	}

}
